package com.oa.common.enums;

import com.oa.I18Code.I18NProperties;
import com.oa.I18Code.SingletonI18NProperties;
import com.oa.interfaces.I18Code;
import com.oa.interfaces.ResponseStatus;

public enum CodeStatus implements I18Code {
    /** 验证码错误 **/
    VERIFY_FAIL(1001),

    /** 参数错误 **/
    PARAMS_FAIL(9003),

    /** 系统异常 **/
    SYSTEM_FAIL(9001),

    /** token失效 **/
    SYSTEM_LOSE(9002),

    /** 用户名不能为空 **/
    USERNAME_NOTNULL(1002),

    /**  用户不存在 **/
    MEMBER_UNDERFIND(1004),

    /** 密码不能为空 **/
    PASSWORD_NOTNULL(1003),

    /** 密码错误 **/
    PASSWORD_FAIL(1004),

    /** 用户未登录 **/
    USER_LOGIN_DUE(1005),

    /** 原密码错误 **/
    ORIGINAL_PASSWORD_FAIL(1006),

    /** 新密码不能为空 **/
    NEW_PASSWORD_NOTNULL(1007),

    /** 原密码不能为空 **/
    ORIGINAL_PASSWORD_NOTNULL(1008),

    /** 管理员已经存在 **/
    ADMIN_EXIST(1009),

    /** 用户不存在 **/
    PERSON_UNDERFUND(1010),

    /** 用户名已经被使用 **/
    USER_USERNAME_EXIST(1011),

    /** 用户的手机号码已经被使用 **/
    USER_PHONE_EXIST(1012),

    /** 用户邮件已经被使用 **/
    USER_EMAIL_EXIST(1014),

    /** 用户的手机号码不能为空 **/
    USER_PHONE_NOTNULL(1013),

    /** 用户的姓名不能为空 **/
    USER_REALNAME_NOTNULL(1015),

    /** 该员工已经离职,不能登录 **/
    USER_DISMISSION(1016),

    /** 部门已经存在 **/
    DEPARTMENT_EXIST(1031),

    /** 部门名称不能为空 **/
    DEPARTMENT_NAME_NOTNULL(1032),

    /** 部门不存在 **/
    DEPARTMENT_UNDERFUND(1033),

    /** 部门有员工，不能删除 **/
    DEPARTMENT_HAS_USER(1034),

    /** 部门有下级，不能删除 **/
    DEPARTMENT_HAS_CHILD(1035),

    /** 权限的名称不能为空 **/
    ROLE_NAME_NOTNULL(1036),

    /** 权限已经存在 **/
    ROLE_EXIST(1037),

    /** 权限不存在 **/
    ROLE_UNDERFUND(1038),

    /** 该权限已经被使用，不能被删除 **/
    ROLE_NO_DELETE(1039),

    /** 岗位的名称不能为空 **/
    POSITION_NAME_NOTNULL(1041),

    /** 岗位已经存在 **/
    POSITION_EXIST(1042),

    /** 岗位不存在 **/
    POSITION_UNDERFUND(1043),

    /** 公文类型的标题不能为空 **/
    APPSTYPE_NAME_NOTNULL(1051),

    /** 公文类型已经存在 **/
    APPSTYPE_EXIST(1052),

    /** 公文不存在 **/
    APPSTYPE_UNDERFUND(1053),

    /** 表单的名称不能为空 **/
    FORM_NAME_NOTNULL(1061),

    /** 表单不存在 **/
    FORM_UNDERFUND(1062),

    /** 流程的名称不能为空 **/
    FLOW_NAME_NOTNULL(1071),

    /** 流程已经存在 **/
    FLOW_EXIST(1072),

    /** 流程不存在 **/
    FLOW_UNDERFUND(1073),

    /** 公文不存在 **/
    APPS_UNDERFUND(1074),

    ;

    /** 编码 **/
    private int code;

    @Override
    public int getCode() {
        return code;
    }

    @Override
    public void setCode(int code) {
        this.code= code;
    }

    public static ResponseStatus getResponseStatus(String code){
        int num= Long.valueOf(code).intValue();
        for (CodeStatus status: CodeStatus.values()){
            if (num==status.getCode()){
                return status.getResponseStatus();
            }
        }
        return null;
    }

    /**
     * 根据编码初始化枚举
     *
     * @param code
     * 编码
     */
    CodeStatus(int code){
        this.code= code;
    }

    protected static final I18NProperties I18N_PROPERTIES = SingletonI18NProperties.SINGL_TON.properties();

    public ResponseStatus getResponseStatus(){
        return I18N_PROPERTIES.get(String.valueOf(this.code));
    }

}
